package com.uraurora.crescent.ai.fsm.builder;

import com.uraurora.crescent.ai.fsm.action.IAction;

import java.util.Set;
import java.util.function.BiConsumer;

/**
 * @author ：Sei
 * @date ：Created in 2020/8/15 16:34
 */
public interface IStateMachineStateConfigurer<EVENT, STATE> {

    IStateMachineStateConfigurer<EVENT, STATE> init(STATE state);

    IStateMachineStateConfigurer<EVENT, STATE> init(STATE state, IAction<EVENT, STATE> action);

    IStateMachineStateConfigurer<EVENT, STATE> init(STATE state, BiConsumer<EVENT, STATE> action);

    IStateMachineStateConfigurer<EVENT, STATE> init(STATE state, Runnable action);

    IStateMachineStateConfigurer<EVENT, STATE> states(Set<STATE> states);

}
